﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QldtSdh.DAL.Models;

namespace QldtSdh.BLL
{
    public partial class BizChuyenNganhDaoTaoNCS
    {
        /// <summary>
        /// Lấy danh sách tất cả các chuyên ngành đào tạo
        /// </summary>
        /// <returns></returns>
        public static List<NganhDaoTaoNCS> GetList()
        {
            using (var db = QldtSdh.DAL.Models.CEMS4UG_DHKHContext.GetContext())
            {
                return db.NganhDaoTaoNCSDbSet.OrderBy(e => e.MaNganhDaoTao).ToList();
            }
        }

        public static NganhDaoTaoNCS GetByID(string guidIdNganhNCS)
        {
            using (var db = QldtSdh.DAL.Models.CEMS4UG_DHKHContext.GetContext())
            {
                return db.NganhDaoTaoNCSDbSet.Where(e => e.MaNganhDaoTaoNCSGUID == guidIdNganhNCS).FirstOrDefault();
            }
        }

        public static CODE_RESULT_RETURN Add(NganhDaoTaoNCS obj)
        {
            using (var db = QldtSdh.DAL.Models.CEMS4UG_DHKHContext.GetContext())
            {
                var _nganh = db.NganhDaoTaoNCSDbSet.Where(e => e.MaNganhDaoTao == obj.MaNganhDaoTao || e.MaSoNganhDaoTao == obj.MaSoNganhDaoTao).FirstOrDefault();
                if (_nganh != null)
                    return CODE_RESULT_RETURN.MaTrung;
                //_nganh = db.NganhDaoTaoNCSDbSet.Where(e => e.TenNganhDaoTao == obj.TenNganhDaoTao).FirstOrDefault();
                //if (_nganh != null)
                //    return CODE_RESULT_RETURN.TenTrung;
                obj.MaNganhDaoTaoNCSGUID = obj.MaNganhDaoTao;
                db.NganhDaoTaoNCSDbSet.Add(obj);
                db.SaveChanges();
                NhatKyHoatDong nhatKy = new NhatKyHoatDong();
                BizNhatKyHoatDong.InitData<NganhDaoTaoNCS>(nhatKy, null, obj.MaNganhDaoTaoNCSGUID, LOAIDOITUONG.NGÀNH_ĐÀO_TẠO_NCS, LOAITHAOTAC.Thêm);
                BizNhatKyHoatDong.Add<NganhDaoTaoNCS>(nhatKy, obj);
                return CODE_RESULT_RETURN.ThanhCong;
            }
        }

        public static CODE_RESULT_RETURN Update(NganhDaoTaoNCS obj)
        {
            using (var db = QldtSdh.DAL.Models.CEMS4UG_DHKHContext.GetContext())
            {
                var _nganh = db.NganhDaoTaoNCSDbSet.Where(e => e.MaNganhDaoTao == obj.MaNganhDaoTao && e.MaNganhDaoTaoNCSGUID != obj.MaNganhDaoTaoNCSGUID).FirstOrDefault();
                if (_nganh != null)
                    return CODE_RESULT_RETURN.MaTrung;
                _nganh = db.NganhDaoTaoNCSDbSet.Where(e => e.MaNganhDaoTaoNCSGUID == obj.MaNganhDaoTaoNCSGUID).FirstOrDefault();
                if (_nganh != null)
                {
                    NhatKyHoatDong nhatKy = new NhatKyHoatDong();
                    BizNhatKyHoatDong.InitData<NganhDaoTaoNCS>(nhatKy, _nganh, obj.MaNganhDaoTaoNCSGUID, LOAIDOITUONG.NGÀNH_ĐÀO_TẠO_NCS, LOAITHAOTAC.Chỉnh_sửa);

                    _nganh.MaNganhDaoTao = obj.MaNganhDaoTao;
                    _nganh.TenNganhDaoTao = obj.TenNganhDaoTao;
                    _nganh.MaSoNganhDaoTao = obj.MaSoNganhDaoTao;
                    db.SaveChanges();
                    BizNhatKyHoatDong.Add<NganhDaoTaoNCS>(nhatKy, _nganh);
                    return CODE_RESULT_RETURN.ThanhCong;
                }
                else
                    return CODE_RESULT_RETURN.ThatBai;
            }
        }

        public static CODE_RESULT_RETURN Delete(string guidIdNganhNCS)
        {
            using (var db = QldtSdh.DAL.Models.CEMS4UG_DHKHContext.GetContext())
            {
                var _nganh = db.NganhDaoTaoNCSDbSet.Where(e => e.MaNganhDaoTaoNCSGUID == guidIdNganhNCS).FirstOrDefault();
                if (_nganh != null)
                {
                    if (!(_nganh.ListNghienCuuSinh != null && _nganh.ListNghienCuuSinh.Count > 0))
                    {
                        db.NganhDaoTaoNCSDbSet.Remove(_nganh);
                        db.SaveChanges();
                        NhatKyHoatDong nhatKy = new NhatKyHoatDong();
                        BizNhatKyHoatDong.InitData<NganhDaoTaoNCS>(nhatKy, _nganh, _nganh.MaNganhDaoTaoNCSGUID, LOAIDOITUONG.NGÀNH_ĐÀO_TẠO_NCS, LOAITHAOTAC.Xóa);
                        BizNhatKyHoatDong.Add<NganhDaoTaoNCS>(nhatKy, null);
                        return CODE_RESULT_RETURN.ThanhCong;
                    }
                    else
                        return CODE_RESULT_RETURN.ThatBai;
                }
                else
                    return CODE_RESULT_RETURN.ThatBai;
            }
        }
    }

}
